package inmobiliaria.frsf.dao;

import inmobiliaria.frsf.model.DatosAdicionales;
import inmobiliaria.frsf.model.Inmueble;

import java.util.List;
import java.util.Map;

public interface InmuebleDAO {

	Integer guardar(Inmueble inmueble) throws Exception;

	/**
	 * Realiza la busqueda de inmuebles
	 * 
	 * @param id
	 *            Id del Inmueble
	 * @return
	 * @throws Exception
	 */
	List<Inmueble> searchInmueble(Map<String, Object> datos) throws Exception;

	Integer guardarDatosAdicionales(DatosAdicionales datos) throws Exception;

	/**
	 * Elimina el inmueble que posea el id pasado como parametro
	 * 
	 * @param id
	 *            Id del inmueble
	 * 
	 * @throws Exception
	 */
	void eliminar(Integer id) throws Exception;


	/**
	 * Edita los datos adicionales de un inmueble
	 * 
	 * @param datos
	 *            Datos adicionales del inmueble
	 * 
	 * @throws Exception
	 */
	void editarDatosAdicionales(DatosAdicionales datos) throws Exception;

	/**
	 * Persiste las modificaciones realizadas al inmueble
	 * 
	 * @param inmueble
	 *            Inmueble modificado
	 * 
	 * @throws Exception
	 */
	void guardarEdicion(Inmueble inmueble) throws Exception;

	
	/**
	 * Elimina el los datos adicionales que posea el id pasado como parametro
	 * 
	 * @param id
	 *            Id del inmueble
	 * 
	 * @throws Exception
	 */
	void eliminarAdicional(Integer id) throws Exception;

}
